Spring AI ์์ํ๊ธฐ
์๋ฌธ: https://docs.spring.io/spring-ai/reference/getting-started.html
์ด ์น์ ์์๋ Spring AI ์ฌ์ฉ์ ์์ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์์ ์ ์ ๊ณตํฉ๋๋ค.
ํ์์ ๋ฐ๋ผ ๋ค์ ์น์ ์ ๊ฐ ๋จ๊ณ๋ฅผ ๋ฐ๋ผ์ผ ํฉ๋๋ค.
Spring AI๋ Spring Boot 3.2.x ๋ฐ 3.3.x๋ฅผ ์ง์ํฉ๋๋ค.
์คํ๋ง ์ด๊ธฐํ
start.spring.io๋ก ์ด๋ํ์ฌ ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉํ AI ๋ชจ๋ธ๊ณผ ๋ฒกํฐ ์คํ ์ด๋ฅผ ์ ํํ์ธ์.
๋ง์ผ์คํค ๋ฐ ์ค๋ ์ท ๋ฆฌํฌ์งํ ๋ฆฌ ์ถ๊ฐํ๊ธฐ
์ข ์์ฑ ์ค๋ํซ์ ์ง์ ์ถ๊ฐํ๋ ค๋ฉด ๋ค์ ์น์ ์ ์ง์นจ์ ๋ฐ๋ฅด์ธ์.
๋ง์ผ์คํค ๋ฐ ์ค๋ ์ท ๋ฒ์ ์ ์ฌ์ฉํ๋ ค๋ฉด ๋น๋ ํ์ผ์ Spring ๋ง์ผ์คํค ๋ฐ/๋๋ ์ค๋ ์ท ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ํ ์ฐธ์กฐ๋ฅผ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
Maven์ ๊ฒฝ์ฐ ํ์์ ๋ฐ๋ผ ๋ค์ ๋ฆฌํฌ์งํ ๋ฆฌ ์ ์๋ฅผ ์ถ๊ฐํฉ๋๋ค:
<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/snapshot</url>
<releases>
<enabled>false</enabled>
</releases>
</repository>
</repositories>
Gradle์ ๊ฒฝ์ฐ ํ์์ ๋ฐ๋ผ ๋ค์ ๋ฆฌํฌ์งํ ๋ฆฌ ์ ์๋ฅผ ์ถ๊ฐํฉ๋๋ค:
repositories {
mavenCentral()
maven { url 'https://repo.spring.io/milestone' }
maven { url 'https://repo.spring.io/snapshot' }
}
์ข ์์ฑ ๊ด๋ฆฌ
Spring AI BOM(Bill of Materials)์ Spring AI์ ํน์ ๋ฆด๋ฆฌ์ค์์ ์ฌ์ฉ๋๋ ๋ชจ๋ ์ข ์์ฑ์ ๊ถ์ฅ ๋ฒ์ ์ ์ ์ธํฉ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ ๋น๋ ์คํฌ๋ฆฝํธ์์ BOM์ ์ฌ์ฉํ๋ฉด ์ข ์์ฑ ๋ฒ์ ์ ์ง์ ์ง์ ํ๊ณ ์ ์ง ๊ด๋ฆฌํ ํ์๊ฐ ์์ต๋๋ค. ๋์ ์ฌ์ฉ ์ค์ธ BOM ๋ฒ์ ์ ๋ฐ๋ผ ์ฌ์ฉ๋๋ ์ข ์์ฑ ๋ฒ์ ์ด ๊ฒฐ์ ๋ฉ๋๋ค. ๋ํ ์ฌ์ ์ํ์ง ์๋ ํ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์๋๊ณ ํ ์คํธ๋ ์ข ์์ฑ ๋ฒ์ ์ ์ฌ์ฉํ๋๋ก ๋ณด์ฅํฉ๋๋ค.
Maven ์ฌ์ฉ์๋ผ๋ฉด pom.xml
ํ์ผ์ ๋ค์์ ์ถ๊ฐํ์ฌ BOM์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-bom</artifactId>
<version>1.0.0-SNAPSHOT</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
Gradle ์ฌ์ฉ์๋ ๋ํ Maven BOM์ ์ฌ์ฉํ์ฌ ์ข ์์ฑ ์ ์ฝ ์กฐ๊ฑด์ ์ ์ธํ๊ธฐ ์ํ Gradle(5.0 ์ด์) ๊ธฐ๋ณธ ์ง์์ ํ์ฉํ์ฌ Spring AI BOM์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ Gradle ๋น๋ ์คํฌ๋ฆฝํธ์ ์ข ์์ฑ ์น์ ์ 'ํ๋ซํผ' ์ข ์์ฑ ํธ๋ค๋ฌ ๋ฉ์๋๋ฅผ ์ถ๊ฐํ์ฌ ๊ตฌํ๋ฉ๋๋ค. ์๋ ์ค๋ํซ์์ ๋ณผ ์ ์๋ฏ์ด, ๊ทธ ๋ค์์๋ ์ฌ์ฉํ๋ ค๋ ํ๋ ์ด์์ spring-ai ๋ชจ๋์ ๋ํ ์คํํฐ ์ข ์์ฑ์ ๋ฒ์ ์์ด ์ ์ธํ ์ ์์ต๋๋ค(์: spring-ai-openai).
dependencies {
implementation platform("org.springframework.ai:spring-ai-bom:1.0.0-SNAPSHOT")
// Replace the following with the starter dependencies of specific modules you wish to use
implementation 'org.springframework.ai:spring-ai-openai'
}
ํน์ ์ปดํฌ๋ํธ์ ๋ํ ์ข ์์ฑ ์ถ๊ฐ
๋ฌธ์์ ๋ค์ ๊ฐ ์น์ ์ ํ๋ก์ ํธ ๋น๋ ์์คํ ์ ์ถ๊ฐํด์ผ ํ๋ ์ข ์์ฑ์ ๋ณด์ฌ์ค๋๋ค.
- ์ฑํ ๋ชจ๋ธ
- ์๋ฒ ๋ฉ ๋ชจ๋ธ
- ์ด๋ฏธ์ง ์์ฑ ๋ชจ๋ธ
- ํธ๋์คํฌ๋ฆฝ์ ๋ชจ๋ธ
- ํ ์คํธ ์์ฑ ๋ณํ(TTS) ๋ชจ๋ธ
- ๋ฒกํฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค
์ํ ํ๋ก์ ํธ
GitHub์์ ์ด๋ฌํ ํ๋ก์ ํธ๋ฅผ ๋ณต์ ํ์ฌ ์์ํ ์ ์์ต๋๋ค.
ํญ๊ณตํธ ์์ฝ ๋์ฐ๋ฏธ
github.com/tzolov/playground-flight-booking
์ด์ฉ์ฝ๊ด(๊ฒ์ ์ฆ๊ฐ ์์ฑ, RAG)์ ์ก์ธ์คํ๊ณ , ์์ (ํจ์ ํธ์ถ)์ ์ํํ๊ธฐ ์ํ ๋๊ตฌ(Java ๋ฉ์๋)์ ์ก์ธ์คํ๋ฉฐ, LLM์ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์์ ์ํธ ์์ฉํ๋ AI ๊ธฐ๋ฐ ์์คํ